package org.jeecg.modules.hc.utils;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;


/**
 * author作者：lilingjie
 */
public class DateTimeUtils {

    // 返回格式化日期时间字符串
    private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";

    // 获取一个日期时间多少分钟之后的时间
    public static String minutesLater(Date date, int minutes) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MINUTE, minutes);
        return formatDate(calendar.getTime());
    }

    // 获取一个日期时间多少分钟之前的时间
    public static String minutesBefore(Date date, int minutes) {
        return minutesLater(date, -minutes);
    }

    // 获取一个日期多少天之后的时间
    public static String daysLater(Date date, int days) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, days);
        return formatDate(calendar.getTime());
    }

    // 获取一个日期多少天之前的时间
    public static String daysBefore(Date date, int days) {
        return daysLater(date, -days);
    }

    // 格式化日期时间为指定格式的字符串
    private static String formatDate(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat(DATE_TIME_FORMAT);
        return sdf.format(date);
    }

    // 获取一个日期时间多少小时之后的时间
    public static String hoursLater(Date date, int hours) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.HOUR_OF_DAY, hours);
        return formatDate(calendar.getTime());
    }

    // 获取一个日期时间多少小时之前的时间
    public static String hoursBefore(Date date, int hours) {
        return hoursLater(date, -hours);
    }

//    public static void main(String[] args) {
//        // 测试方法
//        Date now = new Date(123,7,28,11,14,0);
//        System.out.println(now.getTime());
//        System.out.println("当前时间：" + formatDate(now));
//        System.out.println("1小时后的时间：" + hoursLater(now, 1));
//        System.out.println("2小时前的时间：" + hoursBefore(now, 2));
//        System.out.println("1天后的时间：" + daysLater(now, 1));
//        System.out.println("2天前的时间：" + daysBefore(now, 2));
//    }
}

